package com.cweb.framework.generator.tableInfo.entity;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 数据库表列信息
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class ColumnInfo extends Model<ColumnInfo> {
    /**
     * 字段名称
     */
    private String columnName;
    /**
     * 字段名称（简要）
     */
    private String columnNameShort;

    /**
     * 字段类型
     */
    private String dataType;

    /**
     * 列描述
     */
    private String columnComment;

    /**
     * 列配置
     */
    private ColumnConfigInfo configInfo;

    /**
     * Java属性类型
     */
    private String attrType;

    /**
     * Java属性名称
     */
    private String attrName;
    /**
     * Java属性名称(首字母大写)
     */
    private String attrNameUpper;

    /**
     * 字段关键字
     */
    private String columnKey;

    public void setColumnComment(String columnComment) throws Exception {
        // 根据列描述解析列的配置信息
        if (StrUtil.isNotEmpty(columnComment) && columnComment.startsWith("{")) {
            this.configInfo = JSONUtil.toBean(columnComment, ColumnConfigInfo.class);
            this.columnComment = configInfo.getTitle();
        } else {
            this.columnComment = columnComment;
        }
    }

}
